home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / libs / tsipp / tsipp.lha / tsipp3.0a / demos / structure.tcl < prev    next >
Encoding:
Text File  |  1992-11-02  |  2.4 KB  |  73 lines

  1. #==============================================================================
  2. #                               structure.tcl
  3. #------------------------------------------------------------------------------
  4. # A port of SIPP demo program structure.c to Tcl-SIPP.
  5. #------------------------------------------------------------------------------
  6. # $Id: structure.tcl,v 2.0 1992/11/02 03:55:34 markd Rel $
  7. #------------------------------------------------------------------------------
  8.  
  9. source util.tcl
  10. ParseArgs
  11.  
  12. set SPHERERES 40
  13. set CYLRES    40
  14. set M_PI      3.14159265358979323846
  15.  
  16. proc SIGNBIT {bit i} {return [expr {(($i >> $bit) & 1) ? -1.0 : 1.0}]}
  17.  
  18. set surf [SippShaderBasic 0.4 0.7 0.1 {0.8 0.6 0.3}]
  19.     
  20. set bumpy_surf [SippShaderBumpy $surf 14.0 HOLES]
  21.  
  22. SippLightSourceCreate { 1.0  1.0 1.0} {0.9 0.9 0.9} DIRECTION
  23. SippLightSourceCreate {-1.0 -1.0 0.5} {0.4 0.4 0.4} DIRECTION
  24.  
  25. set cyl_surf [SippShaderBasic 0.5 0.4 0.3 {0.5 0.6 0.8}]
  26.     
  27. set structure [SippObjectCreate]
  28.  
  29. set sphere [SippSphere 1.0 $SPHERERES $bumpy_surf WORLD]
  30.  
  31. for {set i 0} {$i < 8} {incr i} {
  32.     if $i {
  33.         set sphere [SippObjectInstance $sphere]
  34.     }
  35.     SippObjectMove $sphere [list [expr {2.0 * [SIGNBIT 2 $i]}] \
  36.                                  [expr {2.0 * [SIGNBIT 1 $i]}] \
  37.                                  [expr {2.0 * [SIGNBIT 0 $i]}]]
  38.     SippObjectAddSubobj $structure $sphere
  39. }
  40.  
  41. set cyl [SippCylinder 0.25 4.0 $CYLRES $cyl_surf WORLD]
  42.  
  43. for {set i 0} {$i < 4} {incr i} {
  44.     if $i {
  45.         set cyl [SippObjectInstance $cyl]
  46.     }
  47.     SippObjectMove $cyl [list [expr {2.0 * [SIGNBIT 1 $i]}] \
  48.                               [expr {2.0 * [SIGNBIT 0 $i]}] 0.0]
  49.     SippObjectAddSubobj $structure $cyl
  50. }
  51.  
  52. for {set i 0} {$i < 4} {incr i} {
  53.     set cyl [SippObjectInstance $cyl]
  54.     SippObjectRotateX $cyl [expr {$M_PI / 2.0}]
  55.     SippObjectMove $cyl [list [expr {2.0 * [SIGNBIT 1 $i]}] 0.0 \
  56.                               [expr {2.0 * [SIGNBIT 0 $i]}]]
  57.     SippObjectAddSubobj $structure $cyl
  58. }
  59.  
  60. for {set i 0} {$i < 4} {incr i} {
  61.     set cyl [SippObjectInstance $cyl]
  62.     SippObjectRotateY $cyl [expr {$M_PI / 2.0}]
  63.     SippObjectMove $cyl [list 0.0 [expr {2.0 * [SIGNBIT 1 $i]}] \
  64.                               [expr {2.0 * [SIGNBIT 0 $i]}]]
  65.     SippObjectAddSubobj $structure $cyl
  66. }
  67.  
  68. SippObjectAddSubobj WORLD $structure
  69.  
  70. SippCameraParams STDCAMERA {10.0 -5.0 15.0} {0.0 0.0 0.0} {0.0 0.0 1.0} 0.25
  71.  
  72. DoRendering "structure"
  73.